package com.crm.system.service.csd.customerManager;

import com.crm.common.model.DhPageInfo;
import com.crm.model.qo.exchangeProductsRecord.ExchangeProductsRecordQO;
import com.crm.model.qo.exchangeProductsRecord.ProductExchangeFormQO;
import com.crm.model.qo.exchangeProductsRecord.ProductExchangeaApprovalQO;
import com.crm.model.qo.finishOrderProductManager.FinishOrderProductQO;
import com.crm.model.vo.csd.product.ChangeCourseRecordVO;
import com.crm.model.vo.customerContractManager.CustomerChangeCourseRecordVO;
import com.crm.model.vo.exchangeProductsRecord.ExchangeProductsRecordVO;
import com.crm.model.vo.exchangeProductsRecord.ProductExchangeFormVO;
import com.crm.model.vo.exchangeProductsRecord.ProductExchangeaApprovalVO;
import com.crm.model.vo.finishOrderProduct.FinishOrderProductVO;
import com.crm.model.vo.productManager.CustomerMemberProductVO;
import com.crm.model.vo.productManager.CustomerProductVO;

import java.util.List;
import java.util.Map;

/**
 * @author wangpeng
 * @Date 2021/9/1 13:50
 */
public interface ProductDetailsService {
    /**
     * selectProductDetailsList
     *  产品管理 --产品明细
     * @Author wangpeng
     * @Date 2021/9/1
     * @param pageIndex
     * @param pageSize
     * @param sortName
     * @param sortOrder
     * @param qo
     * @return
     */
    DhPageInfo<FinishOrderProductVO> selectProductDetailsList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, FinishOrderProductQO qo);

    /**
     * selectCustomerMemberProductList
     * 产品管理--产品明细--会员高级筛选
     * @Author wangpeng
     * @Date 2021/9/2
     * @param productStatus	//产品停/启用状态--0:启用;1:停用
     * @return
     */
    List<CustomerMemberProductVO> selectCustomerMemberProductList(Integer productStatus);

    /**
     * selectCustomerProductList
     * 产品管理--产品明细--非会员高级筛选
     * @Author wangpeng
     * @Date 2021/9/3
     * @param shelfStatus	
     * @return
     */
    List<CustomerProductVO> selectCustomerProductList(Integer shelfStatus);

    /**
     * selectChangeCourseCecordList
     * @Author wangpeng
     * @Date 2021/10/22
     * @param pageIndex	
     * @param pageSize
     * @param sortName
     * @param sortOrder
     * @return
     */
    DhPageInfo<CustomerChangeCourseRecordVO> selectChangeCourseCecordList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, ChangeCourseRecordVO vo);

    /**
     * selectChangeCourseCecordRuleNumber
     * @Author wangpeng
     * @Date 2021/10/26
     * @param 	
     * @return
     */
    List<ChangeCourseRecordVO> selectChangeCourseCecordRuleNumber();


    List<CustomerChangeCourseRecordVO> selectExamineAndApproveList(String changeCourseId);

    /**
     * exchangeApproval
     * @Author wangpeng
     * @Date 2021/10/22
     * @param changeCourseId	
     * @param examine
     * @return
     */
    Map exchangeApproval(String changeCourseId, String examine,String remarks,String[] courseId,String[] changeCourseTitle,String ruleTitle);


    DhPageInfo<CustomerChangeCourseRecordVO> selectExchangeCenterList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, ChangeCourseRecordVO vo);

    ChangeCourseRecordVO selectExchangeDetails(String changeCourseId);

    CustomerChangeCourseRecordVO selectViewDetails(String changeCourseId);

    DhPageInfo<FinishOrderProductVO> selectExchangeOrderProductList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, String orderNumber);

    List<FinishOrderProductVO> selectExchangeOrderProductByorderNumber(String orderNumber);

    Map addProductExchangeApproval(ProductExchangeaApprovalQO qo);

    DhPageInfo<ProductExchangeaApprovalVO> selectProductExchangeApprovalList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder);

    void updateProductExchangeApproval(String productExchangeApprovalId,String approvalStatus,String approvalRemarks,String exchangeFinishOrderProductId,String exchangeNumber);

    DhPageInfo<ExchangeProductsRecordVO> selectProductExchangeApprovalByExchangeNumber(String exchangeNumber,String type);

    void addProductExchangeform(ProductExchangeFormQO qo);

    List<ProductExchangeFormVO> selectProductExchangeFormList(String orderNumber);

    Map deleteProductExchangeFormByProductExchangeId(String productExchangeId, String delFlag);

    List<ProductExchangeaApprovalVO> selectProductExchangeApprovaLByOrderNumber(String orderNumber);

    void deleteRroductExchangeForm(String productExchangeId);

    List<CustomerProductVO> selectExchangeCustomerProductList(String productName);

    List<CustomerMemberProductVO> selectExchangeCustomerMemberProductList(String memberCardName);

    ProductExchangeaApprovalVO selectApprovedform(String productExchangeApprovalId);
}
